{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import random\n",
    "import datetime\n",
    "import matplotlib.pyplot as plt\n",
    "import tensorflow as tf\n",
    "# import tensorflow.contrib.layers as ly\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn import preprocessing\n",
    "import os, re\n",
    "import pickle\n",
    "import pymysql\n",
    "import pymongo\n",
    "import json\n",
    "import requests\n",
    "import time, datetime"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "def g1(x):\n",
    "    x = str(x)\n",
    "    date = x[:4] + x[5:7] + x[8:10]\n",
    "    time = int(x[11:13])\n",
    "    if time == 0:\n",
    "        result = 0\n",
    "    else:\n",
    "        result = load_list[date][time] - load_list[date][time-1]\n",
    "    return result\n",
    "\n",
    "def g2(x):\n",
    "    x = str(x)\n",
    "    date = x[:4] + x[5:7] + x[8:10]\n",
    "    time = int(x[11:13])\n",
    "    if time == 23:\n",
    "        result = 0\n",
    "    else:\n",
    "        result = load_list[date][time+1] - load_list[date][time]\n",
    "    return result\n",
    "\n",
    "def normalize(x, x_min, x_max):\n",
    "    x = (2*x - x_max - x_min) / (x_max - x_min + 1e-5)\n",
    "    return x\n",
    "\n",
    "def re_normalize(x, x_min, x_max):\n",
    "    x = ((x_max - x_min + 1e-5) * x + x_max + x_min) / 2\n",
    "    return x\n",
    "\n",
    "def wind_speed_encoding(x):\n",
    "    if x == 'AUTO':\n",
    "        return 1\n",
    "    elif x == 'LOW':\n",
    "        return 2\n",
    "    elif x == 'MEDIUM':\n",
    "        return 3\n",
    "    else:\n",
    "        return 4\n",
    "\n",
    "def mode_encoding(x):\n",
    "    if x == 'AUTO':\n",
    "        return 1\n",
    "    elif x == 'COLD':\n",
    "        return 2\n",
    "    elif x == 'DEHUMI':\n",
    "        return 3\n",
    "    elif x == 'VENT':\n",
    "        return 4\n",
    "    else:\n",
    "        return 5   \n",
    "    \n",
    "def power_state_encoding(x):\n",
    "    if x == 'ON':\n",
    "        return 1\n",
    "    else:\n",
    "        return 0\n",
    "\n",
    "def plot_loss(list_train_loss, list_test_loss):\n",
    "    plt.figure(figsize=(16,6))\n",
    "    plt.plot(list_train_loss, label='train loss')\n",
    "    plt.plot(list_test_loss, label='test loss')\n",
    "    plt.xticks(fontsize=20)\n",
    "    plt.yticks(fontsize=20)    \n",
    "    plt.xlabel('Epoch', fontsize=25)\n",
    "    plt.ylabel('Loss', fontsize=25)\n",
    "    plt.legend(loc='best', fontsize=20)\n",
    "    plt.show()\n",
    "    \n",
    "def plot_acc(list_train_acc, list_test_acc):\n",
    "    plt.figure(figsize=(16,6))\n",
    "    plt.plot(list_train_acc, label='train acc')\n",
    "    plt.plot(list_test_acc, label='test acc')\n",
    "    plt.xticks(fontsize=20)\n",
    "    plt.yticks(fontsize=20)    \n",
    "    plt.xlabel('Epoch', fontsize=25)\n",
    "    plt.ylabel('Accuracy', fontsize=25)\n",
    "    plt.legend(loc='best', fontsize=20)\n",
    "    plt.show()\n",
    "        \n",
    "def plot_result(time, y_true, y_pred, label):    \n",
    "    for i in range(len(time) // 20):\n",
    "        plt.figure(figsize=(16,4))\n",
    "        plt.plot(time[i*20:(i+1)*20], y_true[i*20:(i+1)*20], 'ro-', label='ground truth')\n",
    "        plt.plot(time[i*20:(i+1)*20], y_pred[i*20:(i+1)*20], 'bo-', label=label)\n",
    "        plt.xticks(rotation=30, fontsize=20)\n",
    "        plt.yticks(fontsize=20)\n",
    "        plt.xlabel('Time', fontsize=25)\n",
    "        plt.ylabel('Temperature', fontsize=25)\n",
    "        plt.legend(loc='best', fontsize=20)\n",
    "        plt.show()        \n",
    "\n",
    "def plot_temperature(time, temp):\n",
    "    plt.figure(figsize=(16,6))\n",
    "    plt.plot(time, temp, 'ro-', label='Temperature indoor')\n",
    "    plt.xticks(rotation=30, fontsize=20)\n",
    "    plt.yticks(fontsize=20)\n",
    "    plt.xlabel('Time', fontsize=25)\n",
    "    plt.ylabel('Temperature', fontsize=25)\n",
    "    plt.legend(loc='best', fontsize=20)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def init_model_params():\n",
    "    model_params = {'Network': {'Layers': []}}\n",
    "    return model_params\n",
    "\n",
    "def conv_layer_json(model_params, layer, w, b, strides):\n",
    "    x = layer.get_shape().as_list()[2]\n",
    "    y = layer.get_shape().as_list()[1]\n",
    "    z = layer.get_shape().as_list()[3]\n",
    "    kernal_size = w.shape[0]\n",
    "    layer_json = {'LayerType': 'conv', 'InputSize': {'X': x, 'Y': y, 'Z': z},\\\n",
    "                  'Parameters': {'Stride': strides, 'KernelSize': kernal_size}, 'Weights': [], 'Biases': {}}\n",
    "    w_data = w.transpose((3,2,0,1)).tolist()\n",
    "    for data in w_data:\n",
    "        weights_json = {'TDSize': {'X': kernal_size, 'Y': kernal_size, 'Z': z}, 'Data': data}\n",
    "        layer_json['Weights'].append(weights_json)\n",
    "    b_data = [b.reshape(-1,1).tolist()]\n",
    "    biases_json = {'TDSize': {'X': 1, 'Y': len(w), 'Z':1}, 'Data': b_data}\n",
    "    layer_json['Biases'] = biases_json\n",
    "    model_params['Network']['Layers'].append(layer_json)\n",
    "    return model_params\n",
    "\n",
    "def gap_layer_json(model_params, layer):\n",
    "    x = layer.get_shape().as_list()[2]\n",
    "    y = layer.get_shape().as_list()[1]\n",
    "    z = layer.get_shape().as_list()[3]\n",
    "    layer_json = {'LayerType': 'gap', 'InputSize': {'X': x, 'Y': y, 'Z': z}}\n",
    "    model_params['Network']['Layers'].append(layer_json)\n",
    "    return model_params\n",
    "\n",
    "def fc_layer_json(model_params, layer, w, b):\n",
    "    if len(layer.get_shape()) == 2:\n",
    "        x = layer.get_shape().as_list()[1]\n",
    "        y = 1\n",
    "        z = 1\n",
    "    elif len(layer.get_shape()) == 4:\n",
    "        x = layer.get_shape().as_list()[2]\n",
    "        y = layer.get_shape().as_list()[1]\n",
    "        z = layer.get_shape().as_list()[3]\n",
    "    else:\n",
    "        print('error')\n",
    "    layer_json = {'LayerType': 'fc', 'InputSize': {'X': x, 'Y': y, 'Z': z},\\\n",
    "                  'OutputSize': {'X': w.shape[1], 'Y': 1, 'Z': 1}, 'Weights': [], 'Biases': {}}\n",
    "    w_data = [w.transpose(1,0).tolist()]\n",
    "    weights_json = {'TDSize': {'X': w.shape[0], 'Y': w.shape[1], 'Z': 1}, 'Data': w_data}\n",
    "    layer_json['Weights'].append(weights_json)\n",
    "    b_data = [b.reshape(-1,1).tolist()]\n",
    "    biases_json = {'TDSize': {'X': 1, 'Y': b.shape[0], 'Z':1}, 'Data': b_data}\n",
    "    layer_json['Biases'] = biases_json\n",
    "    model_params['Network']['Layers'].append(layer_json)    \n",
    "    return model_params\n",
    "\n",
    "def relu_layer_json(model_params, layer):\n",
    "    x = layer.get_shape().as_list()[1]\n",
    "    y = 1\n",
    "    z = 1    \n",
    "    layer_json = {'LayerType': 'relu', 'InputSize': {'X': x, 'Y': y, 'Z': z}}\n",
    "    model_params['Network']['Layers'].append(layer_json)    \n",
    "    return model_params"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "mongo = pymongo.MongoClient(\n",
    "    host = '10.10.3.153',            \n",
    "    port = 27017\n",
    ")\n",
    "mongo_db = mongo['thermocontrol']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "city, endpointid, did = 'zhuhai', '3009043075069384925', '780f7759bf850000050001001edfcc8e' # 格力花园四楼\n",
    "# city, endpointid, did = 'hangzhou', '3008193246025911637', '780f7727e49c0000050001009a2f4d14' # 康总\n",
    "# city, endpointid, did = 'hangzhou', '3009059270064407738', '780f7727e53a0000050001007134ba30' # 姚总\n",
    "# city, endpointid, did = 'hangzhou', '3008097348623416618', '780f7727e53a000005000100d627f84e' # 茶水间\n",
    "# city, endpointid, did = 'hangzhou', '3008248669026814986', '780f7727e53a000005000100e59f80ec' # 刘总"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "col = mongo_db['controldata']\n",
    "ret = col.find({'endpointid':endpointid}).sort([('date',-1)]).limit(100)\n",
    "raw_data = []\n",
    "for i in ret:\n",
    "    raw_data += i['data']\n",
    "\n",
    "df = pd.DataFrame(raw_data)[['time','dt','power_state','temp_set','mode','wind_speed',\\\n",
    "                             'temp_in','temp_in_start','temp_out','humid_in','humid_in_start',\\\n",
    "                             'power_state_previous','temp_set_previous','mode_previous','wind_speed_previous']]\n",
    "df['time'] = pd.to_datetime(df.time)\n",
    "df = df.sort_values(['time']).reset_index(drop=True)\n",
    "df = df[df.temp_in != -1].reset_index(drop=True)\n",
    "df['temp_in_delta'] = df.temp_in - df.temp_in_start\n",
    "df['temp_in_out'] = df.temp_in_start - df.temp_out\n",
    "df['temp_set_in'] = df.temp_set - df.temp_in_start\n",
    "df['temp_set_out'] = df.temp_set - df.temp_out\n",
    "df = df[df['power_state'] == 'ON'].reset_index(drop=True)\n",
    "df['power_state'] = df.power_state.apply(power_state_encoding)\n",
    "df['power_state_previous'] = df.power_state_previous.apply(power_state_encoding)\n",
    "df['mode'] = df['mode'].apply(mode_encoding)\n",
    "df['mode_previous'] = df.mode_previous.apply(mode_encoding)\n",
    "df['wind_speed'] = df['wind_speed'].apply(wind_speed_encoding)\n",
    "df.loc[df[df.power_state==0].index, ['temp_set','mode','wind_speed','temp_set_in']] = 0\n",
    "df.loc[df[df.power_state_previous==0].index, ['temp_set_previous','mode_previous','wind_speed_previous']] = 0\n",
    "df.dropna(inplace=True)\n",
    "df['dt'] = df.dt.apply(lambda x: x / 60)\n",
    "df = df[(df.dt <= 35) & (df.dt != 0)].reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = df[df.time <= '2019-08-12']\n",
    "# df.loc[:,'wind_speed'] = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "df1 = df.iloc[:int(0.99*df.shape[0]),:] # for train and test\n",
    "df2 = df.iloc[int(0.99*df.shape[0]):,:] # for valid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "features = ['temp_in_out', 'temp_set_in', 'temp_in_start', 'dt', 'mode', 'wind_speed', 'power_state'] # 变频\n",
    "# features += ['power_state_previous', 'mode_previous'] # 变频+上一次操作\n",
    "x = df1[features].values\n",
    "y = df1[['temp_in_delta']].values\n",
    "z = df1[['temp_in_start']].values\n",
    "shuffled_indexes = np.random.permutation(x.shape[0])\n",
    "x = x[shuffled_indexes]\n",
    "y = y[shuffled_indexes]\n",
    "z = z[shuffled_indexes]\n",
    "x_min, x_max = x.min(axis=0).reshape(1,x.shape[1]), x.max(axis=0).reshape(1,x.shape[1])\n",
    "y_min, y_max = y.min(), y.max()\n",
    "x = normalize(x, x_min, x_max)\n",
    "y = normalize(y, y_min, y_max)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "percent = 0.7\n",
    "x_train = x[:int(percent*df1.shape[0])]\n",
    "x_test = x[int(percent*df1.shape[0]):]\n",
    "y_train = y[:int(percent*df1.shape[0])]\n",
    "y_test = y[int(percent*df1.shape[0]):]\n",
    "z_train = z[:int(percent*df1.shape[0])]\n",
    "z_test = z[int(percent*df1.shape[0]):]\n",
    "time_train = df1.time[:int(percent*df1.shape[0])]\n",
    "time_test = df1.time[int(percent*df1.shape[0]):]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_epochs = 1000\n",
    "initial_learning_rate = 0.001\n",
    "n_classes = 1\n",
    "n_input = x_train.shape[1]\n",
    "n_examples = x_train.shape[0]\n",
    "batch_size = 8\n",
    "n_batches_per_epoch = int(n_examples / batch_size)\n",
    "n_hidden_1 = 8\n",
    "n_hidden_2 = 8\n",
    "n_hidden_3 = 8\n",
    "n_hidden_4 = 8\n",
    "n_hidden_5 = 8"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "module 'tensorflow' has no attribute 'placeholder'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-27-028692ba59c2>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0mgraph\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mGraph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mgraph\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_default\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m     \u001b[0minputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplaceholder\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfloat32\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn_input\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      5\u001b[0m     \u001b[0mtargets\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplaceholder\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfloat32\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn_classes\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mAttributeError\u001b[0m: module 'tensorflow' has no attribute 'placeholder'"
     ]
    }
   ],
   "source": [
    "# 定义图\n",
    "graph = tf.Graph()\n",
    "with graph.as_default():\n",
    "    inputs = tf.placeholder(tf.float32, [None, n_input])\n",
    "    targets = tf.placeholder(tf.float32, [None, n_classes])\n",
    "\n",
    "# 正常学习\n",
    "    weights = {\n",
    "        'w1': tf.Variable(tf.random_normal([n_input, n_hidden_1])),\n",
    "        'w2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),\n",
    "        'w3': tf.Variable(tf.random_normal([n_hidden_2, n_hidden_3])),\n",
    "        'w4': tf.Variable(tf.random_normal([n_hidden_3, n_hidden_4])),\n",
    "        'w5': tf.Variable(tf.random_normal([n_hidden_4, n_hidden_5])),\n",
    "        'w6': tf.Variable(tf.random_normal([n_hidden_5, n_classes])),\n",
    "    }\n",
    "    \n",
    "    biases = {\n",
    "        'b1': tf.Variable(tf.random_normal([n_hidden_1])),\n",
    "        'b2': tf.Variable(tf.random_normal([n_hidden_2])),\n",
    "        'b3': tf.Variable(tf.random_normal([n_hidden_3])),\n",
    "        'b4': tf.Variable(tf.random_normal([n_hidden_4])),\n",
    "        'b5': tf.Variable(tf.random_normal([n_hidden_5])),\n",
    "        'b6': tf.Variable(tf.random_normal([n_classes])),\n",
    "    }\n",
    "    \n",
    "# 迁移学习    \n",
    "#     weights = {\n",
    "#         'w1': tf.Variable(w1.astype(np.float32)),\n",
    "#         'w2': tf.Variable(w2.astype(np.float32)),\n",
    "#         'w3': tf.Variable(w3.astype(np.float32)),\n",
    "#         'w4': tf.Variable(w4.astype(np.float32)),\n",
    "#         'w5': tf.Variable(w5.astype(np.float32)),\n",
    "#         'w6': tf.Variable(w6.astype(np.float32)),\n",
    "#     }\n",
    "    \n",
    "#     biases = {\n",
    "#         'b1': tf.Variable(b1.astype(np.float32)),\n",
    "#         'b2': tf.Variable(b2.astype(np.float32)),\n",
    "#         'b3': tf.Variable(b3.astype(np.float32)),\n",
    "#         'b4': tf.Variable(b4.astype(np.float32)),\n",
    "#         'b5': tf.Variable(b5.astype(np.float32)),\n",
    "#         'b6': tf.Variable(b6.astype(np.float32)),\n",
    "#     }\n",
    "    \n",
    "        \n",
    "    def DNN(inputs, weights, biases):\n",
    "        x = tf.add(tf.matmul(inputs, weights['w1']), biases['b1'])\n",
    "        x = tf.nn.relu(x)\n",
    "        x = tf.add(tf.matmul(x, weights['w2']), biases['b2'])\n",
    "        x = tf.nn.relu(x)\n",
    "        x = tf.add(tf.matmul(x, weights['w3']), biases['b3'])\n",
    "        x = tf.nn.relu(x)\n",
    "        x = tf.add(tf.matmul(x, weights['w4']), biases['b4'])\n",
    "        x = tf.nn.relu(x)\n",
    "        x = tf.add(tf.matmul(x, weights['w5']), biases['b5'])\n",
    "        x = tf.nn.relu(x)\n",
    "        x = tf.add(tf.matmul(x, weights['w6']), biases['b6'])\n",
    "        return x\n",
    "\n",
    "    pred = DNN(inputs, weights, biases)\n",
    "    loss = tf.reduce_mean(tf.square(pred - targets))\n",
    "    optimizer = tf.train.AdamOptimizer(learning_rate=initial_learning_rate).minimize(loss)\n",
    "    init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'inputs' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-28-bbd1b46dc0cc>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0minputs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m: name 'inputs' is not defined"
     ]
    }
   ],
   "source": [
    "inputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'tf' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-1-ca6017917e8c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m# 定义会话\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0msess\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgraph\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mgraph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0msess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minit\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mlist_train_loss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0mlist_test_loss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mNameError\u001b[0m: name 'tf' is not defined"
     ]
    }
   ],
   "source": [
    "# 定义会话\n",
    "sess = tf.Session(graph=graph)\n",
    "sess.run(init)\n",
    "list_train_loss = []\n",
    "list_test_loss = []\n",
    "list_train_acc = []\n",
    "list_test_acc = []\n",
    "test_loss_temp = 1e10\n",
    "test_acc_temp = 0\n",
    "train_acc_temp = 0\n",
    "for curr_epoch in range(n_epochs):\n",
    "    train_loss = 0\n",
    "    for batch in range(n_batches_per_epoch):\n",
    "        indexes = [i % n_examples for i in range(batch * batch_size, (batch + 1) * batch_size)]\n",
    "        batch_x_train = x_train[indexes]\n",
    "        batch_y_train = y_train[indexes]\n",
    "\n",
    "        feed_batch={inputs: batch_x_train, targets: batch_y_train}\n",
    "        sess.run(optimizer, feed_batch)\n",
    "\n",
    "    feed_train={inputs: x_train, targets: y_train}\n",
    "    train_loss, y_train_pred = sess.run([loss, pred], feed_train)\n",
    "    list_train_loss.append(train_loss)\n",
    "\n",
    "    feed_test={inputs: x_test, targets: y_test}\n",
    "    test_loss, y_test_pred = sess.run([loss, pred], feed_test)\n",
    "    list_test_loss.append(test_loss)\n",
    "\n",
    "    y_train_real = re_normalize(y_train, y_min, y_max) + z_train\n",
    "    y_test_real = re_normalize(y_test, y_min, y_max) + z_test\n",
    "    y_train_pred = re_normalize(y_train_pred, y_min, y_max) + z_train\n",
    "    y_test_pred = re_normalize(y_test_pred, y_min, y_max) + z_test\n",
    "    \n",
    "    train_acc = ((abs(y_train_real - y_train_pred) < 0.2).all(axis=1)).sum() / len(y_train_real)\n",
    "    list_train_acc.append(train_acc)\n",
    "    test_acc = ((abs(y_test_real - y_test_pred) < 0.2).all(axis=1)).sum() / len(y_test_real)\n",
    "    list_test_acc.append(test_acc)\n",
    "\n",
    "    if test_loss < test_loss_temp:\n",
    "        test_loss_temp = test_loss\n",
    "        test_acc_temp = test_acc\n",
    "        train_acc_temp = train_acc\n",
    "        w1, b1 = sess.run([weights['w1'], biases['b1']])\n",
    "        w2, b2 = sess.run([weights['w2'], biases['b2']])\n",
    "        w3, b3 = sess.run([weights['w3'], biases['b3']])\n",
    "        w4, b4 = sess.run([weights['w4'], biases['b4']])\n",
    "        w5, b5 = sess.run([weights['w5'], biases['b5']])\n",
    "        w6, b6 = sess.run([weights['w6'], biases['b6']])\n",
    "\n",
    "    if (curr_epoch+1) % 100 == 0 or (curr_epoch+1) == 1:\n",
    "        log = 'Epoch {}/{}: train_loss = {:.4f}, test_loss = {:.4f}, train_acc = {:.3f}, test_acc = {:.3f}'\n",
    "        print(log.format(curr_epoch+1, n_epochs, train_loss, test_loss, train_acc, test_acc))\n",
    "        \n",
    "print('The minimal test loss is {:.3f} with the train accuracy {:.3f} test accuracy {:.3f}'\\\n",
    "      .format(test_loss_temp, train_acc_temp, test_acc_temp))\n",
    "plot_acc(list_train_acc, list_test_acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 所有时间的图\n",
    "x1 = df[features].values\n",
    "z1 = df[['temp_in_start']].values\n",
    "x1 = normalize(x1, x_min, x_max)\n",
    "x1 = x1.dot(w1) + b1\n",
    "x1 = (abs(x1) + x1) / 2\n",
    "x1 = x1.dot(w2) + b2\n",
    "x1 = (abs(x1) + x1) / 2\n",
    "x1 = x1.dot(w3) + b3\n",
    "x1 = (abs(x1) + x1) / 2\n",
    "x1 = x1.dot(w4) + b4\n",
    "x1 = (abs(x1) + x1) / 2\n",
    "x1 = x1.dot(w5) + b5\n",
    "x1 = (abs(x1) + x1) / 2\n",
    "y_pred = x1.dot(w6) + b6\n",
    "y_pred = re_normalize(y_pred, y_min, y_max) + z1\n",
    "\n",
    "plt.figure(figsize=(16,8))\n",
    "plt.plot(df.time, df.temp_in, 'ro-', label='Truth Curve')\n",
    "plt.plot(df.time[:len(df1)], y_pred[:len(df1)], 'bo-', label='Train and Test Curve')\n",
    "plt.plot(df.time[len(df1):], y_pred[len(df1):], 'go-', label='Valid Curve')\n",
    "plt.xticks(rotation=30, fontsize=20)\n",
    "plt.yticks(fontsize=20)\n",
    "plt.xlabel('Time', fontsize=25)\n",
    "plt.ylabel('Temperature', fontsize=25)\n",
    "plt.legend(loc='best', fontsize=20)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 592,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\npdAZppJHWQorAh5W2QOTFXc0TTB9enEbU0CqquCd9lGhSvS2bZtYm1xZyjs6pOO54grP2xU5dtsN\nnn7atnuuLerqYPJkb44VREIy3sycM6FLkHc1hUHMTBwDnMJMbmMF1YCiesdSmPmn0hsTc5G6kG1D\nZZtdgpzsLWc5tMZGUUBRXljLhpv7+7zz4NprrY+5fn1g+oWi4TBpYiqpZdFiUd6Na1GulFJILfKp\ngPmXNgH/BV7JkITNC34I7AM8qbVOLbXWBtyKJHkzfnv7ArcA04GEUmp/rfXmXCfQWmul1OnAd4Gb\ngNSZSAJ4RGudyUoPgFLqEuASgPHjx9v8WuGhvh42bSqApbzeYg0lm6+L1WeijMfu6yCW8nff9exw\nvtJlKZ801JOY+rBQVQVrtw5lx8dtoVlZXb1atq5E+YcfSh2o2FKem4kTu/1ZvbgnOjttBKyGnJCM\nN/UdmW+eFVRzAb/pIdhv4XvsumI1JSIP7ONwIdsIhiCXRVu+XLaWmrvUa5S7ub87O+GMM6zfv/de\nZ+eKInlaykFE+QEHeNimkONqPqeUOgf4ATDOYpdVSqmbtNa/c92y3ue8GvgGkhH93NT3tNZNSAK2\nVF5USn0WeBk4GKmtfreN8wwEfgucAFyJuOe3IcnffpY87v9YxcxrrecAcwCmTp3qx8JEUSlYkrfx\n47t9slKpTlaky/ReBBdBcuKD+3qoLOWN24F+jJ5e7KyDhaWqCjp1GWs2DmJssRtjk7xqlMeZ1+1j\nJt7LlnkjytesETeHKFvZQjLejO/TyIqOzHd8Rgt6nx/FojwdhwvZYbGU9++f5XYvlUSNVri5v6ur\n4Z4sTrFPPBGYfqFomKSJLkgV5THdOE70ppT6CfAbYDxS+mwTki19CbAx+do44CGl1F1eNFIp9VVE\nUC8Gpmut19v5XNKi/UDy6VE2T/ctpCTbTK31fVrrNVrrj7XWTwGnA/2wIe6jSsFE+axZvV0vKyrk\n9VmzeseCmfdKDR/c102iN198XTym+c0GFJ2MOPHgYjeloHQNaFt3krTAISAvS/mCBdIfRNmF2ivM\nxNurDOylUKM825gSoPFm1iXLqaCnw1/681TqO6r8blL4cFhfedgw6Ncv+Jby6uospSbr6qT/LCXB\nmIof93eA+oWiMWSI67nnmDFyva5a5XGbQo4jUa6U+gLwNUR4zwUO0loP1VrvnXwMQ+p5/y25z1VK\n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\nQblI0pWaKffe5pOvXw/NzfHvl4iISBIEQfl0bdGCdmjOxb9PItJQFJSLJF2pQXlvry1Co1ZoIiIi\npVu61AazSylf13xyEclDQblI0pW6+npPj11rPrmIiEjpmpth5criQbn3Nvit+eQikoeCcpGka26G\nefOmz5T39NgKsueeW539EhERSYrpepUfOGCD4wrKRSQPBeUiaZDJFM+Unzpli7xdfrnmuomIiJSr\nvb34nHK1QxORIhSUi6RBS0vxTPmOHfD44ypdFxERCWPVquKZcrVDE5EiFJSLpEEmUzwoD+aTa5E3\nERGR8rW3w6FDcORI/u1BplxBuYjkoaBcJA2mK1/v6YGzz4YzzqjePomIiCTFdL3K+/qgtdUq10RE\nJlFQLpJ03d3wy1/Ctm1w5pn279xta9bA978PQ0MTt4mIiEhpfvc7uz7vvPzH2q98Bfbtm7pNRASY\nUesdEJEYdXfDxo1w9Kj9u7/f/h3YuBFGRuznw4fHt3V2Vnc/RUREGlV3N3z60/az9/mPtceO2c+5\n23SsFZEs572v9T4k1oUXXujvuuuuWu+GpNmZZ9oJwGSLF9v1gQNTt61ZAzt3xrlXIiIiyaFjrUiq\nOed+5b2/sJLnUKZcJMl27cp/e74ThOkeIyIiIlPpWCsiFdKccpEk6+jIf/vq1XYp5zEiIiIylY61\nIlIhBeUiSbZpE8ybN/G2efPg4x+3S75tmzZVb/9EREQanY61IlIhla+LJFmwiExXl5XKdXTYiUDu\n4jLFtomIiEhxOtaKSIW00FuMtNCbiIiIiIhIckWx0JvK10VERERERERqREG5iIiIiIiISI0oKBcR\nERERERGpEQXlIiIiIiIiIjWioFxERERERESkRhSUi4iIiIiIiNSIgnIRERERERGRGlFQLiIiIiIi\nIlIjCspFREREREREakRBuYiIiIiIiEiNKCgXERERERERqREF5SIiIiIiIiI1oqBcREREREREpEYU\nlIuIiIiIiIjUiIJyERERERERkRpx3vta70NiOef2Av213o+sNuDxWu9EQui9jIbex+jovYyG3sfo\n6L2Mht7HaOh9jI7ey2jofYxOPbyXa7z3Syt5AgXlKeGcu8t7f2Gt9yMJ9F5GQ+9jdPReRkPvY3T0\nXkZD72M09D5GR+9lNPQ+Ricp76XK10VERERERERqREG5iIiIiIiISI0oKE+PzbXegQTRexkNvY/R\n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\n",
      "text/plain": [
       "<Figure size 1152x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 指定时间的图\n",
    "time_left = '2019-08-3 10'\n",
    "time_right = '2019-08-3 20'\n",
    "query = (df.time > time_left) & (df.time < time_right)\n",
    "\n",
    "x1 = df[query][features].values\n",
    "z1 = df[query][['temp_in_start']].values\n",
    "x1 = normalize(x1, x_min, x_max)\n",
    "x1 = x1.dot(w1) + b1\n",
    "x1 = (abs(x1) + x1) / 2\n",
    "x1 = x1.dot(w2) + b2\n",
    "x1 = (abs(x1) + x1) / 2\n",
    "x1 = x1.dot(w3) + b3\n",
    "x1 = (abs(x1) + x1) / 2\n",
    "x1 = x1.dot(w4) + b4\n",
    "x1 = (abs(x1) + x1) / 2\n",
    "x1 = x1.dot(w5) + b5\n",
    "x1 = (abs(x1) + x1) / 2\n",
    "y_pred = x1.dot(w6) + b6\n",
    "y_pred = re_normalize(y_pred, y_min, y_max) + z1\n",
    "\n",
    "plt.figure(figsize=(16,8))\n",
    "plt.plot(df[query].time, df[query].temp_in, 'ro-', label='Truth Curve')\n",
    "plt.plot(df[query].time, y_pred[:len(df1)], 'bo-', label='Predicted Curve')\n",
    "plt.xticks(rotation=30, fontsize=20)\n",
    "plt.yticks(fontsize=20)\n",
    "plt.xlabel('Time', fontsize=25)\n",
    "plt.ylabel('Temperature', fontsize=25)\n",
    "plt.legend(loc='best', fontsize=20)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 593,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "power_state_str_to_int = {\n",
    "    'ON': 1,\n",
    "    'OFF': 0\n",
    "}\n",
    "mode_str_to_int = {\n",
    "    'NAN': 0,\n",
    "    'COLD': 2,\n",
    "    'VENT': 4,\n",
    "    'HEAT': 5\n",
    "}\n",
    "wind_speed_str_to_int = {\n",
    "    'AUTO': 1,\n",
    "    'LOW': 2,\n",
    "    'MEDIUM': 3,\n",
    "    'HIGH': 4\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 597,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "26.3 22 4.300000000000001\n"
     ]
    }
   ],
   "source": [
    "temp_in_start, temp_out = 26.3, 22\n",
    "temp_in_out = temp_in_start - temp_out\n",
    "print(temp_in_start, temp_out, temp_in_out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 604,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "step = 1\n",
    "deltat = 30\n",
    "ret_arr = {}\n",
    "temp_target = 26\n",
    "for power_state in ['ON']:\n",
    "    for mode in ['COLD', 'HEAT', 'VENT']:\n",
    "        if temp_target > temp_out and mode == 'COLD':\n",
    "            continue\n",
    "        if temp_target < temp_out and mode == 'HEAT':\n",
    "            continue        \n",
    "        for wind_speed in ['AUTO','LOW','MEDIUM','HIGH']:\n",
    "            for temp_set in range(16,31):\n",
    "                y_pred_list = []\n",
    "                for i in range(deltat,deltat+1,step):\n",
    "                    temp_set_in = temp_set - temp_in_start\n",
    "                    if power_state == 'OFF':\n",
    "                        x1 = np.array([[temp_in_out, 0, temp_in_start, \\\n",
    "                                        i, 0, 0, 0]])\n",
    "                    elif power_state == 'ON' and mode == 'VENT':\n",
    "                        x1 = np.array([[temp_in_out, 0, temp_in_start, \\\n",
    "                                        i, mode_str_to_int[mode], wind_speed_str_to_int[wind_speed], \\\n",
    "                                        power_state_str_to_int[power_state]]])\n",
    "                    else:\n",
    "                        x1 = np.array([[temp_in_out, temp_set_in, temp_in_start, \\\n",
    "                                        i, mode_str_to_int[mode], wind_speed_str_to_int[wind_speed], \\\n",
    "                                        power_state_str_to_int[power_state]]])\n",
    "                    z1 = np.array([[temp_in_start]])\n",
    "                    x1 = normalize(x1, x_min, x_max)\n",
    "                    x1 = x1.dot(w1) + b1\n",
    "                    x1 = (abs(x1) + x1) / 2\n",
    "                    x1 = x1.dot(w2) + b2\n",
    "                    x1 = (abs(x1) + x1) / 2\n",
    "                    x1 = x1.dot(w3) + b3\n",
    "                    x1 = (abs(x1) + x1) / 2\n",
    "                    x1 = x1.dot(w4) + b4\n",
    "                    x1 = (abs(x1) + x1) / 2\n",
    "                    x1 = x1.dot(w5) + b5         \n",
    "                    x1 = (abs(x1) + x1) / 2\n",
    "                    y_pred = x1.dot(w6) + b6\n",
    "                    y_pred = re_normalize(y_pred, y_min, y_max) + z1\n",
    "                    y_pred_list.append(round(y_pred[0][0],3))\n",
    "                if power_state == 'OFF':\n",
    "                    if power_state_ == 'OFF':\n",
    "                        k = str(round(10*temp_in_start)) + '_' + str(temp_out) + '_' + power_state_ + '_' + 'OFF'\n",
    "                    else:\n",
    "                        k = str(round(10*temp_in_start)) + '_' + str(temp_out) + '_' + 'OFF'\n",
    "                elif power_state == 'ON' and mode == 'VENT':\n",
    "                    if temp_set == int(temp_in_start):\n",
    "                        if power_state_ == 'OFF':\n",
    "                            k = str(round(10*temp_in_start)) + '_' + str(temp_out) + '_' + str(temp_set) + '_' + mode + '_' + wind_speed\n",
    "                        else:\n",
    "                            k = str(round(10*temp_in_start)) + '_' + str(temp_out) + '_' + str(temp_set) + '_' + mode + '_' + wind_speed\n",
    "                    else:\n",
    "                        continue\n",
    "                else:\n",
    "                    if power_state_ == 'OFF':\n",
    "                        k = str(round(10*temp_in_start)) + '_' + str(temp_out) + '_' + str(temp_set) + '_' + mode + '_' + wind_speed\n",
    "                    else:\n",
    "                        k = str(round(10*temp_in_start)) + '_' + str(temp_out) + '_' + str(temp_set) + '_' + mode + '_' + wind_speed\n",
    "                ret_arr.update({k:np.array(y_pred_list)})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 605,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "260_263_22_27_HEAT_AUTO    0.088\n",
      "260_263_22_21_HEAT_AUTO    0.149\n",
      "260_263_22_22_HEAT_AUTO    0.181\n",
      "260_263_22_19_HEAT_LOW     0.236\n",
      "260_263_22_18_HEAT_LOW     0.274\n",
      "260_263_22_26_HEAT_AUTO    0.284\n",
      "260_263_22_17_HEAT_LOW     0.309\n",
      "260_263_22_16_HEAT_LOW     0.344\n",
      "260_263_22_16_HEAT_AUTO    0.381\n",
      "260_263_22_28_HEAT_AUTO    0.460\n",
      "dtype: float64 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "# 深度学习\n",
    "ret_val = {}\n",
    "for k,v in ret_arr.items():\n",
    "    key = str(round(10*temp_target)) + '_' + k\n",
    "    ret_val.update({key:abs(v - temp_target).sum() / len(v)})\n",
    "ret_val = pd.Series(ret_val)\n",
    "print(ret_val.sort_values()[:10],'\\n')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 保存模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 505,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "fc1 = tf.add(tf.matmul(inputs, weights['w1']), biases['b1'])\n",
    "relu1 = tf.nn.relu(fc1)\n",
    "fc2 = tf.add(tf.matmul(relu1, weights['w2']), biases['b2'])\n",
    "relu2 = tf.nn.relu(fc2)\n",
    "fc3 = tf.add(tf.matmul(relu2, weights['w3']), biases['b3'])\n",
    "relu3 = tf.nn.relu(fc3)\n",
    "fc4 = tf.add(tf.matmul(relu3, weights['w4']), biases['b4'])\n",
    "relu4 = tf.nn.relu(fc4)                \n",
    "fc5 = tf.add(tf.matmul(relu4, weights['w5']), biases['b5'])    \n",
    "relu5 = tf.nn.relu(fc5)\n",
    "pred = tf.add(tf.matmul(relu5, weights['w6']), biases['b6'])\n",
    "\n",
    "model_params = init_model_params()\n",
    "model_params = fc_layer_json(model_params, inputs, w1, b1)\n",
    "model_params = relu_layer_json(model_params, fc1)\n",
    "model_params = fc_layer_json(model_params, fc1, w2, b2)\n",
    "model_params = relu_layer_json(model_params, fc2)\n",
    "model_params = fc_layer_json(model_params, fc2, w3, b3)\n",
    "model_params = relu_layer_json(model_params, fc3)\n",
    "model_params = fc_layer_json(model_params, fc3, w4, b4)\n",
    "model_params = relu_layer_json(model_params, fc4)\n",
    "model_params = fc_layer_json(model_params, fc4, w5, b5)\n",
    "model_params = relu_layer_json(model_params, fc1)\n",
    "model_params = fc_layer_json(model_params, fc5, w6, b6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 506,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "scale = {'scale': {'xmin':x_min.tolist()[0], 'xmax':x_max.tolist()[0], 'ymin':[y_min], 'ymax':[y_max]}}\n",
    "transfermodel = scale.copy()\n",
    "transfermodel.update({'modelparams': model_params})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 507,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "with open('../control/transfermodel.txt', 'w') as f:\n",
    "    content = json.dumps(transfermodel)\n",
    "    f.write(content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
